package util;

import domain.pojo.Medico;
import domain.pojo.Paciente;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Owner
 */
public class Relatorio {
    File arquivo;
    private String textoArquivo = "";
    private final String SEPARADOR = "----------------------------------------------\n\n";
    
    public Relatorio(Medico medico){
	int i = 0;
	do{
	    this.arquivo = new File("Relatorio_Medico_"+medico.getCRM()+"_"+(i++)+".txt");
	}while(this.arquivo.exists());
	escreveCabecalhoMedico(medico);
    }
    
    public Relatorio(Paciente paciente){
	int i = 0;
	do{
	    this.arquivo = new File("Relatorio_Paciente_"+paciente.getCpf()+"_"+(i++)+".txt");
	}while(this.arquivo.exists());
	escreveCabecalhoPaciente(paciente);
    }
    
    public Relatorio(String especialidade){
	int i = 0;
	do{
	    this.arquivo = new File("Relatorio_Especialidade_"+especialidade+"_"+(i++)+".txt");
	}while(this.arquivo.exists());
	escreveCabecalhoEspecialidade(especialidade);
    }
    
    private void escreveCabecalhoMedico(Medico medico){
	String texto = "----------- Relatório de Consultas -----------\n\n";
	texto += "Médico: "+medico.getNome()+"\n";
	texto += "CRM: "+medico.getCRM()+"\n";
	texto += "Especialidade: "+medico.getEspecialidade()+"\n";
	texto += SEPARADOR;
	textoArquivo += texto;
    }
    
    private void escreveCabecalhoPaciente(Paciente paciente){
	String texto = "----------- Relatório de Consultas -----------\n\n";
	texto += "Paciente: "+paciente.getNome()+"\n";
	texto += "CPF: "+paciente.getCpf()+"\n";
	texto += "Data de Nascimento: "+paciente.getData_nascimento()+"\n";
	texto += "Telefone: "+paciente.getTelefone()+"\n";
	texto += "Endereço: "+paciente.getEndereco()+"\n";
	texto += SEPARADOR;
	textoArquivo += texto;
    }
    
    private void escreveCabecalhoEspecialidade(String especialidade){
	String texto = "----------- Relatório de Consultas -----------\n\n";
	texto += "Especialide: "+especialidade+"\n";
	texto += SEPARADOR;
	textoArquivo += texto;
    }
    
    public void escreveConteudo(String[] info){
	String texto = "";
	for(String aux : info){
	    texto += aux+"\n";
	}
	textoArquivo += texto;
	escreveRodape();
    }
    
    private void escreveRodape(){
	String texto = "-------------- Trabalho de POO --------------\n";
	texto += dataAtual();
	texto += "Renato Leal - 10/05537\nJacopo Bellati - 11/0122836\nMauricio Volk - 04/98971";
	textoArquivo += texto;
	salvarArquivo(textoArquivo);
    }
    
    private void salvarArquivo(String texto){
	BufferedWriter out = null;
	try {
	    out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(this.arquivo), "UTF-8"));
	    out.write(texto);
	    out.close();
	} catch (IOException ex) {
	    Logger.getLogger(Relatorio.class.getName()).log(Level.SEVERE, null, ex);
	}
    }
    
    private String dataAtual(){
	Calendar cal = Calendar.getInstance();
	SimpleDateFormat sdf = new SimpleDateFormat(Constantes.DATA);
	return sdf.format(cal.getTime());
    }
    
}
